package com.excellent.auth.service;

import com.excellent.auth.client.UserClient;
import com.excellent.auth.config.JwtProperties;
import com.excellent.pojo.UserInfo;
import com.excellent.user.pojo.User;
import com.excellent.utils.JwtUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author Xxacker
 */
@Service
public class AuthService {

    @Autowired
    private UserClient userClient;

    @Autowired
    private JwtProperties properties;

    /**
     * 1. 根据用户名和密码进行给查询
     * 2. 判断 user 是否为空
     * 3. 通过 jwtUtil 去生成 jwt 类型的 tocken
     * */
    public String authentication(String username, String password) {

        try {
            // 1. 调用微服务，执行查询
            User user = this.userClient.queryUser(username, password);

            // 2. 如果查询结果为null，则直接返回null
            if (user == null) { return null; }

            // 3. 如果有查询结果，则通过 JwtUtils 生成 jwt 类型的 token
            UserInfo userInfo = new UserInfo(user.getId(), user.getUsername());    //载荷
            String token = JwtUtils.generateToken(userInfo, properties.getPrivateKey(), properties.getExpire());  //载荷，私钥
            return token;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
